
#ifndef BUZZER_H
#define BUZZER_H

#include "typedef.h"

#define MUSIC_BUZZ 1

#if MUSIC_BUZZ

  /***************************************************************/
  //需要修改的管脚 PWM工作频率
  #define BUZZ_PWR_PIN   GPIO_Pin_A11
  #define BUZZ_FRQ_PIN   GPIO_Pin_A0
  
  #define PWM_FREQ       16000000      
  /***************************************************************/
  #define FREQ_NO 	0xff

  
  #define BUZ_KEY                 1       //按键音
  #define BUZ_USELESS             2       //无效键
  #define BUZ_ERR                 3       //报警
  #define BUZ_PWRON               4       //上电音
  #define BUZ_MACHOFF             5       //关机音
  #define BUZ_MACHON              6       //开机音
  #define BUZ_FINISH              7       //工作结束提示
	
  #define BUZ_WARN                8       //报警音



  typedef struct
  {
    u16 freq;                   //频率
    u8 OSC_time;               //振荡持续时间,最小单位为10ms
    u8 PWR_time;               //供电持续时间,最小单位为10ms
  }TONE_t;                     //音调结构体

  /***************************************************************/
  //需要修改的接口函数
  void music_buzz_gpio_init(void);
  void music_buzz_PwrOn(void);      
  void music_buzz_PwrOff(void);
  void music_buzz_FrqOff(void);
  void music_buzz_SetFreq(u16 f);

  /***************************************************************/
  //音乐蜂鸣器启动函数
  void music_buzz_start(u8 type);
  //音乐蜂鸣器控制函数 10ms调用一次
  void music_buzz_ctrl(void);
  //音乐蜂鸣器初始化函数
  void music_buzz_init(void);
  #define buzz_gpio_init() music_buzz_gpio_init()
  #define buzz_start(mode) music_buzz_start(mode)
  #define buzz_ctrl()      music_buzz_ctrl()
  #define buzz_init()      music_buzz_init()

#else

  /***************************************************************/
  //需要修改的管脚 PWM 4KHz 设置参数
  #define BUZZ_FRQ_PIN   P3_3
  #define F_4KHZ         3000	      //(Fpwm/(4*1000))
  /***************************************************************/

  #define TOTAL_BUZZ_N  7

  #define BUZZ_SHORT  0
  #define BUZZ_1S     1
  #define BUZZ_3S     2
  #define BUZZ_5S     3
  #define BUZZ_3ST    4
  #define BUZZ_5LN    5

  #define BUZZ_OK      0
  #define BUZZ_WARNING 4
  #define BUZZ_ALARM   6

  typedef struct
  {
    u16 on_time;               
    u16 off_time;              
  }Buzz_t;   

  /***************************************************************/
  //需要修改的接口函数
  void buzz_on(void);
  void buzz_off(void);

  /***************************************************************/
  //普通蜂鸣器启动函数
  void normal_buzz_start(u8 type);
  //普通蜂鸣器控制函数 10ms调用一次
  void normal_buzz_ctrl(void);
  //普通蜂鸣器初始化函数
  void normal_buzz_init(void);

  #define buzz_start(mode) normal_buzz_start(mode)
  #define buzz_ctrl()      normal_buzz_ctrl()
  #define buzz_init()      normal_buzz_init()

#endif

/***************************************************************/


#endif

































